home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / sprite.h < prev    next >
C/C++ Source or Header  |  2000-01-14  |  2KB  |  69 lines

  1. #ifndef SPRITE_H
  2. #define SPRITE_H
  3.  
  4. #define SPRITE_FLIPX                    0x01
  5. #define SPRITE_FLIPY                    0x02
  6. #define SPRITE_FLICKER                    0x04
  7. #define SPRITE_VISIBLE                    0x08
  8. #define SPRITE_TRANSPARENCY_THROUGH        0x10
  9. #define SPRITE_SPECIAL                    0x20
  10.  
  11. #define SPRITE_SHADOW                    0x40
  12. #define SPRITE_PARTIAL_SHADOW            0x80
  13.  
  14. typedef enum {
  15.     SPRITE_TYPE_STACK = 0,
  16.     SPRITE_TYPE_UNPACK,
  17.     SPRITE_TYPE_ZOOM
  18. } SpriteType;
  19.  
  20. struct sprite {
  21.     int priority, flags;
  22.  
  23.     const UINT8 *pen_data;    /* points to top left corner of tile data */
  24.     int line_offset;
  25.  
  26.     const UINT16 *pal_data;
  27.     UINT32 pen_usage;
  28.  
  29.     int x_offset, y_offset;
  30.     int tile_width, tile_height;
  31.     int total_width, total_height;    /* in screen coordinates */
  32.     int x, y;
  33.  
  34.     int shadow_pen;
  35.  
  36.     /* private */ const struct sprite *next;
  37.     /* private */ long mask_offset;
  38. };
  39.  
  40. /* sprite list flags */
  41. #define SPRITE_LIST_BACK_TO_FRONT    0x0
  42. #define SPRITE_LIST_FRONT_TO_BACK    0x1
  43. #define SPRITE_LIST_RAW_DATA        0x2
  44. #define SPRITE_LIST_FLIPX            0x4
  45. #define SPRITE_LIST_FLIPY            0x8
  46.  
  47. struct sprite_list {
  48.     SpriteType sprite_type;
  49.     int num_sprites;
  50.     int flags;
  51.     int max_priority;
  52.     int transparent_pen;
  53.     int special_pen;
  54.  
  55.     struct sprite *sprite;
  56.     struct sprite_list *next; /* resource tracking */
  57. };
  58.  
  59. void sprite_init( void );    /* called by core - don't call this in drivers */
  60. void sprite_close( void );    /* called by core - don't call this in drivers */
  61.  
  62. struct sprite_list *sprite_list_create( int num_sprites, int flags );
  63. void sprite_update( void );
  64. void sprite_draw( struct sprite_list *sprite_list, int priority );
  65.  
  66. void sprite_set_shade_table(UINT16 *table);
  67.  
  68. #endif
  69.